package yz.com.javautil.roadNetwork;

import java.util.Vector;

/**
 * 图的抽象接口
 * 参考资料：https://www.runoob.com/data-structures/graph-theory-path.html
 *
 * @author runoob
 */
public interface Graph {
    /**
     * 节点数
     *
     * @return 节点数量
     */
    int getNodeNum();

    /**
     * 边数
     *
     * @return 边数量
     */
    int getEdgeNum();

    /**
     * 添加边
     *
     * @param pointOne   点
     * @param pointOther 点
     */
    void addEdge(int pointOne, int pointOther);

    /**
     * 边是否存在
     *
     * @param pointOne   点
     * @param pointOther 点
     * @return 是否存在边
     */
    boolean hasEdge(int pointOne, int pointOther);

    /**
     * 返回图中一个顶点的所有邻边
     *
     * @param v 顶点
     * @return 临边
     */
    Vector<Integer> getAdjacentEdge(int v);

    /**
     * 打印图数据（用于测试）
     */
    void show();
}
